::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::------------------::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::---------------------------::::::::::::::::::::::::::
::::::::::::::::::::::::---------------------------------:::::::::::::::::::::::
::::::::::::::::::::::-------------------------------------:::::::::::::::::::::
:::::::::::::::::::::---------------------------------------::::::::::::::::::::
::::::::::::::::::::------------------------------------------::::::::::::::::::
::::::::::::::::::-----------=======================-----------:::::::::::::::::
::::::::::::::::::-------==================================----:::::::::::::::::
:::::::::::::::::---===========================================-::::::::::::::::
::::::::::::::::-=====+%%%%*======+++++++++++++++====+#%%#+=====::::::::::::::::
::::::::::::::::-====+@@@@%%#=++++++++++++++++++++++*%%@@@@*====-:::::::::::::::
::::::::::::::::=====%@@@@%@%+++++++++++++++++++++++#@#@@@@%=====:::::::::::::::
::::::::::::::::=====%@@@@@@#+++++++++++++++++++++++#@@@@@@%+====:::::::::::::::
::::::::::::::::=====+%@@@@#+++++++++**********+++++*%@@@@@*=====:::::::::::::::
::::::::::::::::-=====+****++++++*****************++++##%#*======:::::::::::::::
:::::::::::::::::=======+++++++*********************+++++++======:::::::::::::::
:::::::::::::::::-=====+++++++**********************++++++++====-:::::::::::::::
:::::::::::::::::-=====+++++*******************#*****++++++=====::::::::::::::::
:::::::::::::::::-======++****************************++++=====-::::::::::::::::
:::::::::::::::----=====+*************+++++++**********+++=====:::::::::::::::::
:::::::::::--------======+******************************+=====------::::::::::::
::::::::---------=========++*#######################***+=======-------::::::::::
::::::-----------========+++++*##################***+++=========---------:::::::
::::------------=======+++++++++++***********++++++++++++++======----------:::::
:::------------========++++++++++++++++++++++++++++++++++++=======-----------:::
::-----------===========++++++++*******************+++++++===========---------::
:-======---==============+++++++******************+++++++==============--=====-:
:========================+++++++******************+++++++======================:
-========================+++++++******************+++++++======================-
-======================+++++++++*****************+++++++++=====================-
-=====================++++++++++*****************++++++++++====================:
:-==================++++++++++++*****************++++++++++++=================::
::-===============++++++++++++++****************+++++++++++++++=============-:::
::::-============++++++++++++++++*************++++++++++++++++++===========:::::
:::::-==========++++++++++++++++++++*******+++++++++++++++++++++==========-:::::
:::::-=========++++++++++++++++++++++++++++++++++++++++++++++++++=========-:::::
::::::=========++++++++++++++++++++++++++++++++++++++++++++++++++=========::::::
:::::::=========+++++++++++++++++++++++++++++++++++++++++++++++++========:::::::
::::::::=========++++++++++++++++++++++++++++++++++++++++++++++++=======-:::::::
:::::::::-=======++++++++++++++++++++++++++++++++++++++++++++++++======:::::::::
:::::::::::-=+++++++++++++++++++++++++++++++++++++++++++++++++++++++=-::::::::::
:::::::::::::-=+++++++++++++++++++++++++++++++++++++++++++++++++++=-::::::::::::
::::::::::::::::-==++++++++++++++++++++++++++++++++++++++++++++=-:::::::::::::::
:::::::::::::::::::::-==++++***************************+++=--:::::::::::::::::::
::::::::::::::::::::::::::::---==+++++*******+++++==--::::::::::::::::::::::::::